1. Field of the Invention
This invention relates in general to a computer programming, and more particularly to a method, apparatus and program storage device that provides a user mode device interface for enabling software reuse.
2. Description of Related Art
In a highly competitive market environment, “time to market with superior quality” is the key focus in developing a new product. For a well-established development team with years of experience in software development, the reusability of existing software is the very key to achieving the goals of delivering a new product in the most efficient way with superior quality. Given the same competitiveness in the market environment, what a new product is required to do is constantly increasing and how much it is allowed to cost is reducing. For a software product development, the demanding requirements and pressure of lowering cost are translated into the need of reuse existing software functions in various hardware platforms. One of the focus items to achieve high software reusability is to develop the software functions with the encapsulation of a platform they are operating upon. The platform includes the actual hardware and the operating systems.
One key consideration in selecting a platform for a product is whether the software can best perform in privileged mode or user mode. User mode refers to a nonprivileged state where the executing code is forbidden by the kernel from performing potentially dangerous operations such as writing to system configuration files, killing other users' processes, rebooting the system, etc. In contrast, kernel mode or privileged mode is the mode in which the operating system kernel runs. Code running in this mode has unlimited access to the system memory and external devices.
The traditional thinking is software can best perform in privileged mode. However, given the advancing technology in hardware platform development, operating in user mode may be a much better choice given different product requirements. The built-in protection provided by all modern operating systems for a software running in user mode, the ease of managing a program in a user mode, and the improved system stability with new software functions isolated from kernel are significant benefits of implementing a software project in user mode.
In the past, a developer of a user mode application that desired access to functions running in privilege mode needed to create a private kernel mode driver. Unfortunately, this solution has the disadvantage of requiring all the developers of user mode applications to develop unique kernel mode drivers to essentially provide private access to the privilege functions. More recently, a device interface has been used to map calls to the interface to the kernel mode implementation if the given process is a kernel mode process and to a user mode implementation if the given process is a user mode process.
However, to achieve the reusability and re-implement software functions that were previously running in privileged mode, there needs to be a consistent interface to invoke these functions in both privileged and user modes. For software functions that are to be implemented for running in privileged mode, the device interface is a common interface for all user mode applications to access software functions implemented in privileged mode. However, the device interface is not available to invoke the same software functions if they are ported to be running in user mode.
It can be seen then that there is a need for a method, apparatus and program storage device that provides a user mode device interface for allowing functions previously to be running in privileged mode to be re-implemented to run in user mode.